﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Logica;
using DataTypes;

namespace ServidorWS
{
    /// <summary>
    /// Provee los métodos del servidor de etaxi.
    /// </summary>
    [WebService(Namespace = "http://etaxi.com.uy/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Etaxi : System.Web.Services.WebService
    {
        [WebMethod(Description = "Ingresar al sistema")]
        public bool IngresarSistema(String usuario, String pass)
        {
            return Fachada.Ingresar(usuario, pass);
        }
        
        [WebMethod(Description = "Alta Boleta")]
        public bool AltaBoleta(DataBoleta boleta)
        {
            return Fachada.AltaBoleta(boleta);
        }

        [WebMethod(Description = "Baja boleta")]
        public bool BajaBoleta(DataBoleta boleta)
        {
            return Fachada.BajaBoleta(boleta);
        }

        [WebMethod(Description = "Modificar boleta")]
        public bool ModificarBoleta(DataBoleta boleta)
        {
            return Fachada.ModificarBoleta(boleta);
        }


        [WebMethod(Description = "Alta Coche")]        
        public bool AltaCoche(DataCoche coche)
        {
            return Fachada.AltaCoche(coche);
        }

        [WebMethod(Description = "Baja Coche")]
        public bool BajaCoche(DataCoche coche)
        {
            return Fachada.BajaCoche(coche);
        }

        [WebMethod(Description = "Modificar Coche")]
        public bool ModificarCoche(DataCoche coche)
        {
            return Fachada.ModificarCoche(coche);
        }
        
        [WebMethod(Description = "Alta Proveedor")]
        public bool AltaProveedor(DataProveedor proveedor)
        {
            return Fachada.AltaProveedor(proveedor);
        }

        [WebMethod(Description = "Baja Proveedor")]
        public bool BajaProveedor(DataProveedor proveedor)
        {
            return Fachada.BajaProveedor(proveedor);
        }

        [WebMethod(Description = "Modificar Proveedor")]
        public bool ModificarProveedor(DataProveedor proveedor)
        {
            return Fachada.ModificarProveedor(proveedor);
        }

        [WebMethod(Description = "Listar Proveedores")]
        public List<DataProveedor> ListarProveedores()
        {
            return Fachada.ListarProveedores();
        }

        [WebMethod(Description = "Alta empleado.")]
        public bool AltaEmpleado(DataEmpleado empleado, DataConductor conductor, DataPersonal personal)
        {
            return Fachada.AltaEmpleado(empleado, conductor, personal);
        }

        [WebMethod(Description = "Modificar empleado.")]
        public bool ModificarEmpleado(DataEmpleado empleado, DataConductor conductor, DataPersonal personal)
        {
            return (Fachada.ModificarEmpleado(empleado, conductor, personal));
        }

        [WebMethod(Description = "Cambiar estado Activo - Inactivo.")]
        public bool CambiarEstadoEmpleado(String ci, bool estado)
        {
            return (Fachada.CambiarEstadoEmpleado(ci, estado));
        }

        [WebMethod(Description = "Cambiar contrasenia.")]
        public bool ModificarContraseniaEmpleado(string nomUsuario, string contNueva)
        {
            return (Fachada.ModificarContrasenia(nomUsuario, contNueva));
        }


        [WebMethod(Description = "Alta de gasto.")]
        public bool AltaGasto(DataGasto gasto)
        {
            return Fachada.AltaGasto(gasto);
        }

        [WebMethod(Description = "Eliminar gasto.")]
        public bool EliminarGasto(DataGasto gasto)
        {
            return Fachada.EliminarGasto(gasto);
        }

        [WebMethod(Description = "Modificar gasto.")]
        public bool ModificarGasto(DataGasto gasto)
        {
            return Fachada.ModificarGasto(gasto);
        }

        [WebMethod(Description = "Listar conductores.")]
        public List<DataConductor> ListarConductores()
        {
            return Fachada.ListarConductores();
        }

        [WebMethod(Description = "Listar personal.")]
        public List<DataPersonal> ListarPersonal()
        {
            return Fachada.ListarPersonal();
        }

        [WebMethod(Description = "Listar coches")]
        public List<DataCoche> ListarCoches()
        {
            return Fachada.ListarCoches();
        }

        [WebMethod(Description = "Listar gastos")]
        public List<DataGasto> ListarGastos()
        {
            return Fachada.ListarGastos();
        }

        [WebMethod(Description = "Inicializa la lista de gastos de la boleta")]
        public void InicializarGastosBoletas()
        {
            Fachada.InicializarGastoBoleta();
        }

        [WebMethod(Description = "Agrega un gasto a la lista de gastos de la boleta")]
        public void AgregarGastoBoleta(DataGasto gasto)
        {
            Fachada.AgregarGastoBoleta(gasto);
        }

        [WebMethod(Description = "Elimina un gasto a la lista de gastos de la boleta")]
        public void EliminaGastoBoleta(DataGasto gasto)
        {
            Fachada.EliminarGastoBoleta(gasto);
        }

        [WebMethod(Description = "Lista los gastos asociados a una boleta")]
        public List<DataGasto> ListarGastosBoleta(int idBoleta)
        {
            return Fachada.ListarGastosBoleta(idBoleta);
        }

        [WebMethod(Description = "Listar boletas")]
        public List<DataBoleta> ListarBoletas()
        {
            return Fachada.ListarBoletas();
        }

        [WebMethod(Description = "Dadas dos fechas lista las boletas de ese intervalo de tiempo")]
        public List<DataBoleta> ListarBoletasDesdeHasta(DateTime desde, DateTime hasta)
        {
            return Fachada.ListarBoletasDesdeHasta(desde, hasta);
        }

        [WebMethod(Description = "Modifica estado de la boleta")]
        public void ModificarEstadoBoleta(int idBoleta, string estado)
        {
            Fachada.ModificarEstadoBoleta(idBoleta, estado);
        }

        [WebMethod(Description = "Obtiene el rol del usuario")]
        public string ObtenerRolEmpleado(string usuario)
        {
            return Fachada.ObtenerRolEmpleado(usuario);
        }

    }


}